#include <iostream>
using namespace std;

#include <iomanip>
using std::setw;

template <class T>
int length(T &arr)
{
	// cout << sizeof(arr[0]) << endl;
	// cout << sizeof(arr) << endl;
	return sizeof(arr) / sizeof(arr[0]);
}

void testArrLength()
{
	int arr[] = {1, 5, 9, 10, 9, 2};
	// 方法一
	cout << "数组的长度为："
		 << sizeof(arr) << " / " << sizeof(arr[0])
		 << " = " << sizeof(arr) / sizeof(arr[0])
		 << endl;
		 
	cout << "数组的长度为：" << length(arr) << endl;

	// 方法二
	cout << "数组的长度为："
		 << end(arr) << " - " << begin(arr)
		 << " = " << end(arr) - begin(arr)
		 << endl;
}

int main()
{

	char a1[] = {'C', '+', '+'};	   // 初始化，没有 null
	char a2[] = {'C', '+', '+', '\0'}; // 初始化，明确有 null
	char a3[] = "C++";				   // null 终止符自动添加
	// const char a4[6] = "runoob";	   // 报错，没有 null 的位置

	cout << a1 << endl;
	cout << a2 << endl;
	cout << a3 << endl;

	testArrLength();

	return 0;
}